package com.it.reggie.config;

import lombok.extern.slf4j.Slf4j;
import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;

/**
 * Redis配置类
 */

@Configuration
@Slf4j
public class RedisConfig extends CachingConfigurerSupport {

    @Bean
    public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
        log.info("开始创建redis模板类。。");
        RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();

        //set的时候：用的是JdkSerializationRedisSerializer，get的时候也是JdkSerializationRedisSerializer
        //这里修改的是set(key的值)的时候的JdkSerializationRedisSerializer，为了方便观察，就改成StringRedisSerializer()类型的序列化器
        // 在程序代码里get到的value时候还会反序列化，到时候还会还原回来，所以get到的value就不用动了，使用默认的序列化器就行了
        //默认的Key序列化器为：JdkSerializationRedisSerializer
        redisTemplate.setKeySerializer(new StringRedisSerializer());//新的序列化器(希望代码里key写的什么，存进去的key就是什么)
        redisTemplate.setHashKeySerializer(new StringRedisSerializer());//新的序列化器(希望代码里key写的什么，存进去的key就是什么)

        redisTemplate.setConnectionFactory(connectionFactory);

        return redisTemplate;
    }

}
